 #version 450 core
    out vec4 FragColor;
    in vec3 localPos;
    uniform sampler2D equirectTexture;
    void main()
    {
        // 1. 立方体表面3D坐标（单位向量）
        vec3 normal = normalize(localPos);
    
        // 2. 转换为球面坐标（经度θ，纬度φ）
        float theta = atan(normal.z, normal.x); // 经度（-π~π）
        float phi = asin(normal.y);             // 纬度（-π/2~π/2）
    
        // 3. 映射到全景图像素坐标（UV）
        vec2 uv;
        uv.x = (theta + 3.1415926) / (2 * 3.1415926); // 0~1
        uv.y = (3.1415926/2 - phi) / 3.1415926;       // 0~1
    
        // 4. 采样全景图颜色
        vec3 color = texture(equirectTexture, uv).rgb;
        FragColor = vec4(color, 1.0);
    }
